【URP】Layer毎にPostProcessを分ける

October 31, 2022


映すカメラ毎に適用するPostProessを分けたかった

Unityの公式サンプルである UniversalRenderingExample を確認して解決。

Cameraの設定

Player ┗ ①GameScene ← コクピット以外を描画するCamera ┗ ②Cockpit ← コクピットを描画するCamera

という構成 (UIは除外) ①のカメラと②のカメラはそれぞれ異なるPostEffectを適用させています

3E86CAF53839BD343F0D48A1B62DB839

① GameScene : Camera

カメラの設定は Rendering の CurringMask の設定が Cokpit と UI が外れています

D9B2B0634F564A8F266C10098E49932A

そして Environment の Volumes の Volume Mask は Default のみとなっています 57042F4540B197FEFDBFA74CF48DEE08

この Volume Mask が適用させるPostProecssを制御しているため、このカメラはDefaulLayerオブジェクトのみを対象としています

② CockpitCamera

コクピットのみを映す設定になっています ポストプロセスのVolumeMaskもCockpit

124F44D8B6F100010FA469B9A6B60C35

PostProcess

次に、「適用させるPostProcess」がどうなっているか ニ種類のCameraに別々のPostProcessを掛けるため、 Global Volume Profile もニ種類あります B972C1261BFF02758A51AAE75E995844

これらはHierarchyのGameObjectにそれぞれ別々にアタッチされています

B16598210B4AD30B57B52AF0A5DEC610 ①がDefault Layer設定のPostProcess ②がCockpit Layer設定のPostProcess

それぞれ Layer がMaskされるLayerの設定になっています ここが両方DefaultのままだとDefaultにしかかからないので注意。 コクピットに掛けるならCokpitのGameObjectにVolume設定をつける

F7BA963E14D8300AA7EB074476C72278

39E95F1F3C5AC74D81E1E9E56411658E

以上になります カメラを分ける以上にLayerの設定が必要なので注意